home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / y_n_3.zip / Y-N.LST < prev   
File List  |  1987-08-18  |  7KB  |  177 lines

  1.  IBM Personal Computer MACRO Assembler   Version 2.00      Page    1-1
  2. Y-N  -  Ask Y/N in Batch File                        08-18-87    
  3.  
  4.  
  5. 1                               PAGE     80,132
  6. 2                               TITLE  Y-N  -  Ask Y/N in Batch File
  7. 3                        ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  8. 4                        ; * Y-N                                          *
  9. 5                        ; * Displays command line and then accepts a Y or N, setting ERRORLEVEL   *
  10. 6                        ; * to 1 or 0 respectively.  Used only from BATch files.           *
  11. 7                        ; * Written by:                                     *
  12. 8                        ; * R. Lehr, 901 Rye Beach Rd., Huron Ohio  44839                *
  13. 9                        ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  14. 10                        ; Conversion from ? assembler format to IBM MASM 2.0 format, and trivial  *
  15. 11                        ; bug fixes.  8-18-87 Alan Cox                               *
  16. 12                        ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  17. 13                        ;
  18. 14     0000                   PROG      SEGMENT BYTE PUBLIC 'PROG'
  19. 15                               ASSUME  CS:PROG
  20. 16                               ASSUME  DS:PROG
  21. 17     0100                          ORG     100H
  22. 18     0100                   MAIN      PROC     NEAR
  23. 19     0100  E9 0188 R                JMP     START
  24. 20                        
  25. 21                        ;* * * * *
  26. 22                        ;*  data *
  27. 23                        ;* * * * *
  28. 24     0103  ??              CHAROUT  db  ?
  29. 25     0104  0A 0D 24                       db  10,13,'$'
  30. 26     0107  ??              EXITCODE db  ?
  31. 27     0108     7F [              CMDLN     db  127 dup(?)
  32. 28                    ??         
  33. 29                        ]         
  34. 30                        
  35. 31     0187  24                       db  '$'
  36. 32                        
  37. 33                        ;* * * * *
  38. 34                        ;*  code *
  39. 35                        ;* * * * *
  40. 36     0188                   START:
  41. 37                        ;----- Copy command line -----
  42. 38     0188  B8 0081                     mov  ax,129    ; command line at offset 129 int PSP
  43. 39     018B  8B F0                     mov  si,ax    ; (Program Segment Prefix)
  44. 40     018D  33 C9                     xor  cx,cx
  45. 41     018F  8A 0E 0080                mov  cl,ds:[128]            ;Length of command line at offset 128
  46. 42     0193  8D 3E 0108 R                lea  DI,CMDLN
  47. 43     0197  83 F9 00                     cmp  cx,00    ; if command line length > 0 then
  48. 44     019A  74 08                     je   LNEND
  49. 45     019C  46                     inc  si         ;    skip blank in command line
  50. 46     019D  49                     dec  cx         ;    and adjust length accordingly
  51. 47     019E  F3/ A4                     rep  movsb
  52. 48     01A0  C6 05 20                     mov  [di], byte ptr ' ' ; append 1 blank
  53. 49     01A3  47                     inc  di
  54. 50     01A4  C6 05 24              LNEND: mov  [di], byte ptr '$' ; append string terminator
  55. 51                        
  56. 52                        ;----- Display command line -----
  57. 53     01A7  B4 09                     mov  AH,09    ; display command line
  58. 54     01A9  8D 16 0108 R                lea  DX,CMDLN
  59. 55     01AD  CD 21                     int  21h
  60. 56                        
  61. 57                        ;----- Accept Y or N -----
  62. 58     01AF  90              GETYN: nop         ; repeat
  63. 59     01B0  B4 08                     mov  AH,08    ;    accept keyboard input into AL (no echo)
  64. 60     01B2  CD 21                     int  21h
  65. 61     01B4  3C 00                     cmp  AL,00    ;    if chr(0) not ASCII
  66. 62     01B6  75 05                     jne  UP
  67. 63     01B8  CD 21                     int  21h     ;    get and discard scan code
  68. 64     01BA  EB 21 90                     jmp  ENDGETYN
  69. 65     01BD                   UP:
  70. 66     01BD  24 DF                     and  AL,0DFh    ;    convert to upper case
  71. 67     01BF                   Y:
  72. 68     01BF  3C 59                     cmp  AL,'Y'      ;    if Y
  73. 69     01C1  75 0B                     jne  N
  74. 70     01C3  E8 01E6 R                call DISPLAY    ;    display it
  75. 71     01C6  C6 06 0107 R 01                mov  EXITCODE,1    ;    exitcode = 1
  76. 72     01CB  EB 12 90                     jmp  RETURN
  77. 73     01CE                   N:
  78. 74     01CE  3C 4E                     cmp  AL,'N'      ;    else if N
  79. 75     01D0  75 0B                     jne  ENDGETYN
  80. 76     01D2  E8 01E6 R                call DISPLAY    ;    display it
  81.  IBM Personal Computer MACRO Assembler   Version 2.00      Page    1-2
  82. Y-N  -  Ask Y/N in Batch File                        08-18-87    
  83.  
  84.  
  85. 77     01D5  C6 06 0107 R 00                mov  EXITCODE,0    ;    exitcode = 1
  86. 78     01DA  EB 03 90                     jmp  RETURN
  87. 79     01DD                   ENDGETYN:
  88. 80     01DD  EB D0                     jmp  GETYN    ; until Y or N
  89. 81                        
  90. 82     01DF                   RETURN:
  91. 83     01DF  B4 4C                     mov  ah,04Ch    ; return with ERRORLEVEL in AL
  92. 84     01E1  A0 0107 R                mov  al,EXITCODE
  93. 85     01E4  CD 21                     int  21h
  94. 86                        
  95. 87     01E6                          MAIN     ENDP
  96. 88                        
  97. 89                        ;* * * * * * * *
  98. 90                        ;*  procedures *
  99. 91                        ;* * * * * * * *
  100. 92     01E6                   DISPLAY proc
  101. 93     01E6  A2 0103 R              mov CHAROUT,AL    ; display Y or N and <cr><lf>
  102. 94     01E9  B4 09                   mov AH,09    ;
  103. 95     01EB  8D 16 0103 R              lea DX,CHAROUT
  104. 96     01EF  CD 21                   int 21h
  105. 97     01F1  C3                   ret
  106. 98     01F2                   DISPLAY endp
  107. 99     01F2                   PROG      ENDS
  108. 100                               END     MAIN
  109.  
  110.  IBM Personal Computer MACRO Assembler   Version 2.00      Page    Symbols-1
  111. Y-N  -  Ask Y/N in Batch File                        08-18-87    
  112.  
  113.  
  114. Segments and Groups:
  115.  
  116.          N a m e              Size    Align    Combine    Class
  117.  
  118. PROG . . . . . . . . . . . . . .    01F2    BYTE      PUBLIC    'PROG'
  119.  
  120. Symbols:            
  121.  
  122.          N a m e              Type    Value    Attr         
  123.  
  124. CHAROUT. . . . . . . . . . . . .    L BYTE     0103    PROG
  125. CMDLN. . . . . . . . . . . . . .    L BYTE     0108    PROG    Length =007F
  126. DISPLAY. . . . . . . . . . . . .    N PROC    01E6    PROG    Length =000C
  127. ENDGETYN . . . . . . . . . . . .    L NEAR     01DD    PROG
  128. EXITCODE . . . . . . . . . . . .    L BYTE     0107    PROG
  129. GETYN. . . . . . . . . . . . . .    L NEAR     01AF    PROG
  130. LNEND. . . . . . . . . . . . . .    L NEAR     01A4    PROG
  131. MAIN . . . . . . . . . . . . . .    N PROC    0100    PROG    Length =00E6
  132. N. . . . . . . . . . . . . . . .    L NEAR     01CE    PROG
  133. RETURN . . . . . . . . . . . . .    L NEAR     01DF    PROG
  134. START. . . . . . . . . . . . . .    L NEAR     0188    PROG
  135. UP . . . . . . . . . . . . . . .    L NEAR     01BD    PROG
  136. Y. . . . . . . . . . . . . . . .    L NEAR     01BF    PROG
  137.  
  138. 49992 Bytes free   
  139.  
  140. Warning Severe
  141. Errors    Errors 
  142. 0    0
  143.  
  144.  Y-N  -  Ask Y/N in Batch File
  145.  
  146.  Symbol Cross Reference                       (# is definition)       Cref-1
  147.  
  148. CHAROUT. . . . . . . . . . . . .    24#    93     95 
  149. CMDLN. . . . . . . . . . . . . .    27#    42     54 
  150.  
  151. DISPLAY. . . . . . . . . . . . .    70     76     92#    98 
  152.  
  153. ENDGETYN . . . . . . . . . . . .    64     75     79#
  154. EXITCODE . . . . . . . . . . . .    26#    71     77     84 
  155.  
  156. GETYN. . . . . . . . . . . . . .    58#    80 
  157.  
  158. LNEND. . . . . . . . . . . . . .    44     50#
  159.  
  160. MAIN . . . . . . . . . . . . . .    18#    87    100 
  161.  
  162. N. . . . . . . . . . . . . . . .    69     73#
  163.  
  164. PROG . . . . . . . . . . . . . .    14#    14     15     16     99 
  165.  
  166. RETURN . . . . . . . . . . . . .    72     78     82#
  167.  
  168. START. . . . . . . . . . . . . .    19     36#
  169.  
  170. UP . . . . . . . . . . . . . . .    62     65#
  171.  
  172. Y. . . . . . . . . . . . . . . .    67#
  173.  
  174. 14 Symbols
  175.  
  176. 62338 Bytes Free
  177.